import { post } from "../../../utils/request";

/**
 * 推送应用查询
 * @param {object} data —— 请求参数
 * @param {string} data.appName —— 应用名称
 * @param {string} data.creator —— 创建人姓名
 * @param {string} data.appType —— 应用类型
 * @param {number->string} data.pageIndex —— 当前页数
 * @param {number->string} data.pageSize —— 每页数量
 */
const pushAppConfigQuery = ({
  appName,
  creator,
  appType,
  order = "desc",
  pageIndex = 1,
  pageSize = 12
}) =>
  post("/push/pushAppConfigQuery", {
    appName,
    creator,
    appType,
    order,
    pageIndex: String(pageIndex),
    pageSize: String(pageSize)
  });

/**
 * 推送应用查询(根据Id)
 * @param {number->string} appId —— 请求参数 应用Id
 */
const pushAppConfigById = appId =>
  post("/push/pushAppConfigById", { appId: String(appId) });

/**
 * 推送应用新增/修改
 * @param {object} data —— 请求参数
 * @param {string} data.appId —— 应用Id
 * @param {string} data.appName —— 应用名称
 * @param {string} data.appType —— 应用类型
 * @param {string} data.appDesc —— 接入说明
 * @param {string} data.topic —— 日志采集topic
 * @param {array[object]} data.opTypes —— 推送触发动作
 * @param {array[object]} data.sceneDate —— 场景数据
 * @param {string} data.creator —— 创建人
 */
const pushAppConfigSave = ({
  appId,
  appName,
  appType,
  appDesc,
  topic,
  opTypes = [],
  sceneDate = [],
  creator
}) =>
  post("/push/pushAppConfigSave", {
    appId: appId && String(appId),
    appName,
    appType,
    appDesc,
    topic,
    opTypes,
    sceneDate,
    creator
  });

/**
 * 推送应用删除
 * @param {string} appId —— 请求参数 应用Id
 */
const delPushApp = appId => post("/push/delPushApp", { appId: String(appId) });

/**
 * 获取应用类型下拉框
 */
const getAppType = () => post("/push/getAppType", {});

/**
 * 获取数据来源下拉框
 */
const getDataSource = () => post("/push/getDataSource", {});

/**
 * 获取数据接入方式
 */
const getDataAccessMethod = () => post("/push/getDataAccessMethod", {});

/**
 * 数据接入方式为API时，获取字段名下拉框
 */
const getFiledName = () => post("/push/getFiledName", {});

/**
 * 数据接入方式为DATAHUB时，获取projectName和topicName
 */
const getDataHub = () => post("/push/getDataHub", {});

export default {
  pushAppConfigQuery,
  pushAppConfigById,
  pushAppConfigSave,
  delPushApp,
  getAppType,
  getDataSource,
  getDataAccessMethod,
  getFiledName,
  getDataHub
};
